package projet;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;

import util.HibernateUtil;

public class VoitureDAO
{

	private Session session;

	VoitureDAO(Session s)
	{
		session = s;
	}

	void Delete(Voiture v)
	{
		
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		
		session.delete(v.getVoiture_id());
		session.getTransaction().commit();
		
	}
	Voiture Create(String immatriculation, String type_voiture)
	{
		
		
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		
		Voiture v = new Voiture();
		v.setImmatriculation(immatriculation);
		v.setType_voiture(type_voiture);
	
		
		session.save(v);
		session.getTransaction().commit();
		return v;

	}
	Voiture Update(Voiture v, String immatriculation, String type_voiture)
	{
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
	
		Voiture v2 = (Voiture) session.get(Voiture.class, v.getVoiture_id());
		v2.setImmatriculation(immatriculation);
		v2.setType_voiture(type_voiture);
		
		session.saveOrUpdate(v2);
		session.getTransaction().commit();
		return v2;
	}


	Voiture FindById(int id) 
	{
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
	
		
		Voiture v = (Voiture)session.get(Voiture.class, id);
		
		return v;
		

	}

	@SuppressWarnings("unchecked")
	List<Voiture> FindAll()
	{
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();

		List<Voiture> result = (ArrayList<Voiture>) session.createQuery(
				"from Voiture").list();
		System.out.println("J'ai récupéré toutes les voitures");
		return result;
	

		
	}
	

//	VoitureDAO(Connection c)
//	{
//		cx = c;
//	}

	/*
	List<Voiture> FindAll throws SQLException
	{
		// OLD : TP JDBC
		/*
		 * String sql = "SELECT * FROM VOITURE"; Statement st =
		 * cx.createStatement();
		 * 
		 * 
		 * System.out.println(sql);
		 * 
		 * ResultSet rs = st.executeQuery(sql); while(rs.next()) { Voiture v; v
		 * = new
		 * Voiture(rs.getInt("voiture_id"),rs.getString("immatriculation"),
		 * rs.getString("type_voiture"));
		 * 
		 * list.add(v); }
		 */

		//	private Connection cx;
	//}

	/*
	 * 
	 * 	boolean Create(String immatriculation, String type_voiture)

		boolean val = true;
		String sql = "INSERT INTO VOITURE "
				+ "VALUES (nextval ('voiture_voiture_id_seq')" + ",'"
				+ immatriculation + "','" + type_voiture + "' )";
		try
		{
			System.out.println(sql);
			Statement st = cx.createStatement();
			val = st.execute(sql);
			if (val)
				System.out.println("Executing this command : " + sql + "\n");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return val; 
	}

	void Delete(Voiture v)
	{
		
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		
		session.delete(v.getVoiture_id());
		session.getTransaction().commit();
		
		/*
		try
		{

			Statement st = cx.createStatement();

			ResultSet rs;
			String sql = "DELETE FROM VOITURE WHERE voiture_id = "
					+ v.getImmatriculation();

			rs = st.executeQuery(sql);
		} catch (SQLException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	Voiture FindById(int id) throws SQLException
	{
		
		String sql = "";
		sql = "SELECT * FROM VOITURE WHERE voiture_id = " + id;
		Voiture v = null;
		try
		{
			Statement st = cx.createStatement();

			System.out.println(sql);
			ResultSet rs = st.executeQuery(sql);

			while (rs.next())
			{
				v = new Voiture(rs.getInt("voiture_id"),
						rs.getString("immatriculation"),
						rs.getString("type_voiture"));
			}
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
		return v;

	}
	boolean Update(Voiture v, String immatriculation, String type_voiture,	Personne proprietaire)
	{
		
		int val = 0;
		
		
		String sql = "UPDATE PERSONNE SET immatriculation = '"
				+ immatriculation + "' ," + " type_voiture = '" + type_voiture
				+ "'" + ", proprietaire = " + proprietaire
				+ "' WHERE personne_id = " + v.getVoiture_id();
		try
		{
			System.out.println(sql);
			Statement st = cx.createStatement();

			System.out.println(sql);

			val = st.executeUpdate(sql);
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return (val > 0);
	}
*/


}
